/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.promocion.web;

import com.isd.facturacion.modelo.ItemProductoTienda;
import com.isd.facturacion.modelo.MovimientoTienda;
import com.isd.facturacion.modelo.MovimientoTiendaPK;
import com.isd.facturacion.rn.MovimientoFacturacionRN;
import com.isd.global.modelo.CorreoElectronico;
import com.isd.global.modelo.Parametro;
import com.isd.global.rn.ParametrosRN;
import com.isd.global.util.JsfUtil;
import com.isd.global.util.SenderEmail;
import com.isd.global.web.MailFactory;
import com.isd.inventario.modelo.Producto;
import com.isd.promocion.modelo.ItemPromocion;
import com.isd.promocion.modelo.Promocion;
import com.isd.promocion.rn.PromocionRN;
import com.isd.seguridad.web.UsuarioSessionBean;
import com.isd.venta.modelo.Cliente;
import com.isd.venta.modelo.CondicionDePago;
import com.isd.ventas.rn.ClienteRN;
import com.isd.ventas.rn.CondicionDePagoRN;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.mail.internet.InternetAddress;
import org.primefaces.event.FlowEvent;

/**
 *
 * @author ctrosch
 */
@ManagedBean(name="promocionBean")
@SessionScoped
public class PromocionBean implements Serializable {

    @EJB private ParametrosRN parametroRN;
    @EJB private CondicionDePagoRN condicionDePagoRN;    
    @EJB private ClienteRN clienteRN;
    @EJB private MovimientoFacturacionRN movimientoFacturacionRN;
    @EJB private PromocionRN promocionRN;
    @EJB private MailFactory mailFactoryBean;
    
    private List<CondicionDePago> condicionesDePago;
    private String codigoCondicionDePago;
    private CondicionDePago condicionPago;

    private boolean skipLogin;
    private boolean compraConfirmada;

    private Integer idPromocion;

    private String razonSocial;
    private String cuit;
    private String direcciónEmail;
    private String observaciones;

    private List<String> seleccion;

    private Promocion promocion;
    private MovimientoTienda pedido;

    @ManagedProperty(value = "#{usuarioSessionBean}")
    private UsuarioSessionBean usuarioSession;
    
    Parametro p;

    /** Creates a new instance of ContactoMB */
    

    @PostConstruct
    private void init(){

        try {
            p = parametroRN.getParametros();
            compraConfirmada = false;

            if (usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getCliente() != null) {

                razonSocial = usuarioSession.getUsuario().getCliente().getNombre();
                cuit = usuarioSession.getUsuario().getCliente().getNrodoc();
                direcciónEmail = usuarioSession.getUsuario().getCliente().getDireml();

            }
        } catch (Exception e) {
            
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "init", e);            
        }
    }

    public void cargarPromocion(){

        if(idPromocion!=null){

            promocion = promocionRN.getPromocion(idPromocion);

            if(promocion==null){
                JsfUtil.addErrorMessage("No se encontró promoción activa");
            }else if(!promocion.isActiva()){
                JsfUtil.addErrorMessage("La promoción ha finalizado");
            }
            
        }
        
        idPromocion = null;
        compraConfirmada = false;
        skipLogin = false;
    }

    public String seleccionarPromocionByNumero(Integer nroPromocion){

        Promocion promo = promocionRN.getPromocion(nroPromocion);

        if(promo==null) return "";
        
        return seleccionarPromocion(promo);
    }

    public String seleccionarPromocion(Promocion p){

        promocion = p;
        compraConfirmada = false;
        skipLogin = false;
        return "../promos/promocion.xhtml";
    }

    public boolean generarPedido(){
        try {

            Cliente c = null;

            if(usuarioSession.isEstaRegistrado()&& usuarioSession.getUsuario().getCliente() != null){
                c = usuarioSession.getUsuario().getCliente();
            }else{
                c = clienteRN.getCliente("000000");
            }
            //pedido = movimientoFacturacionRN.nuevoMovimiento(c, "FC", "PRW", "0140");
            pedido = new MovimientoTienda();
            pedido.setCliente(c);
            pedido.setFchmov(new Date());
            pedido.setItemsProducto(new ArrayList<ItemProductoTienda>());

            //movimientoFacturacionRN.guardar(pedido);
            return true;

        } catch (Exception e) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "generarPedido", e);
            JsfUtil.addErrorMessage("No se puede generar pedido para la promoción, imposible continuar");
            return false;
        }
    }

    public void agregarProducto(Producto p, BigDecimal pcioBase){

        ItemProductoTienda item = new ItemProductoTienda();
        
        item.setCantid(BigDecimal.ONE);
        item.setProducto(p);

        item.setPrecio(pcioBase);
        item.setPrenac(pcioBase);
        item.setPctbf1(BigDecimal.ZERO);
        item.setPctbf2(BigDecimal.ZERO);
        item.setPctbfn(BigDecimal.ZERO);

        //Precio final con bonificacion incluida
        BigDecimal precioFinal = pcioBase.add(pcioBase.multiply(item.getPctbfn()).divide(new BigDecimal(100)));

        item.setTotlin(precioFinal);

        item.setUnimed(p.getUnidadMedida().getUnidad());
        item.setUnifac(p.getUnidadMedida().getUnidad());

        item.setMovimiento(pedido);

        pedido.getItemsProducto().add(item);
        movimientoFacturacionRN.calcularImportesDocumento(pedido);
        
    }

    public String onFlowProcess(FlowEvent event) {

//        System.err.println("Old " + event.getOldStep());
//        System.err.println("New " + event.getNewStep());

        if(event.getOldStep().equals("inicio")){

            if(usuarioSession.isEstaRegistrado()&& usuarioSession.getUsuario().getCliente() != null){

                if(!generarPedido()){
                    return event.getOldStep();
                }
                cargarDatos();
                return "datos";
            }

            if(usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getTipo() == 'V' && usuarioSession.getUsuario().getCliente()==null){
                JsfUtil.addErrorMessage("Seleccione un cliente y vuelva a intentar");
                return event.getOldStep();
            }
        }

        if(event.getNewStep().equals("identificacion")){

            JsfUtil.addInfoMessage("Ingrese usuario y clave para identificarse, de lo contrario tilde la opción  \"No recuerdo mis datos\" para continuar");
            JsfUtil.addWarningMessage("En caso de no registrarse, la aceptación de su pedido que sujeta a revisión");
        }

        if(event.getOldStep().equals("identificacion")){
            
            if(!skipLogin){                
                if(!usuarioSession.isEstaRegistrado()){
                                        
                    String sLogin = usuarioSession.login();
                    
                    if(!sLogin.equals("/global/principal.xhtml")){
                        JsfUtil.addInfoMessage("En caso de no recordar los datos de acceso, tilde la opción \"No recuerdo mis datos\" para continuar");                    
                        return event.getOldStep();
                    }                    
                }                
            }
        }

        if(event.getOldStep().equals("identificacion") && event.getNewStep().equals("datos")){

            if(!generarPedido()){

                return event.getOldStep();
            }
            cargarDatos();
        }

        if(event.getOldStep().equals("datos") && event.getNewStep().equals("cantidades")){
            
            if(promocion.getProductoUnico().equals("S")){
                pedido.getItemsProducto().clear();
                agregarProducto(promocion.getProducto(), promocion.getPrecioPromocion());
                JsfUtil.addInfoMessage("Ingrese las cantidades a comprar");
                return "cantidades";
            }
        }

        if(event.getNewStep().equals("seleccionCombo")){

            JsfUtil.addInfoMessage("Por favor, seleccione los productos disponibles");
        }

        if(event.getOldStep().equals("seleccionCombo") && event.getNewStep().equals("cantidades") ){

            if(seleccion.isEmpty()){
                JsfUtil.addErrorMessage("Por favor, seleccione al menos 1 producto");
                return event.getOldStep();
            }

            pedido.getItemsProducto().clear();

            for(String s: seleccion){
                int i = Integer.parseInt(s) - 1;
                ItemPromocion ip = promocion.getItemsPromocion().get(i);
                agregarProducto(ip.getProducto(), ip.getPrecioPromocion());
            }
        }

        if(event.getNewStep().equals("cantidades")){
            JsfUtil.addInfoMessage("Ingrese las cantidades a comprar");
        }

        if(event.getOldStep().equals("cantidades") && event.getNewStep().equals("condicionPago")){
            if(!validarCantidades()){

                return event.getOldStep();
            }

            JsfUtil.addInfoMessage("Seleccione la condición de pago");
        }

        if(event.getOldStep().equals("condicionPago") && event.getNewStep().equals("confirmacion")){

            condicionPago = condicionDePagoRN.getCondicionDePago(codigoCondicionDePago);
            pedido.setCondicionDePago(condicionPago);
        }

        if(event.getNewStep().equals("confirmacion")){

            JsfUtil.addInfoMessage("Ha llegado al final, haga click en \"Confirmar compra\" para finalizar");

            if(skipLogin){
                JsfUtil.addWarningMessage("Usted no ha ingresado usuario y clave, por tal motivo nos pondremos en contacto para validar la compra.");
            }
        }

        if(event.getOldStep().equals("confirmacion") && event.getNewStep().equals("condicionPago") && compraConfirmada){
            return event.getOldStep();
        }

        return event.getNewStep();
    }

    public boolean validarCantidades(){
            
        boolean todoOk = true;

        if(promocion.getProductoUnico().equals("S")){

            //Buscamos el primer y unico items de la lista
            ItemProductoTienda item = pedido.getItemsProducto().get(0);

            if(item.getCantid().compareTo(promocion.getCantidadMinima())== -1 ){
                JsfUtil.addWarningMessage("La cantidad mínima de compra es "+ promocion.getCantidadMinima().intValue()+", ingrese un valor mayor");
                todoOk = false;
            }

            if(item.getCantid().compareTo(promocion.getCantidadMaxima())== 1 ){
                JsfUtil.addWarningMessage("La cantidad máxima de compra es "+ promocion.getCantidadMaxima().intValue()+", ingrese un valor menor");
                todoOk = false;
            }
        }else{

            for(ItemProductoTienda item: pedido.getItemsProducto()){

                for(ItemPromocion ip:promocion.getItemsPromocion()){

                    if(item.getProducto().equals(ip.getProducto())){

                        if(item.getCantid().compareTo(ip.getCantidadMinima())== -1 ){
                            JsfUtil.addWarningMessage("La cantidad mínima de compra para "
                                    + item.getProducto().getDescrp() + " es "
                                    + ip.getCantidadMinima().intValue()+ ", ingrese un valor mayor" );
                            todoOk = false;
                        }

                        if(item.getCantid().compareTo(ip.getCantidadMaxima())== 1 ){
                            JsfUtil.addWarningMessage("La cantidad máxima de compra para "
                                    + item.getProducto().getDescrp() + " es "
                                    + ip.getCantidadMaxima().intValue()+", ingrese un valor menor");
                            todoOk = false;
                        }   
                    }
                }
            }
        }

        return todoOk;
    }

    public void confirmarCompra(){

        if(usuarioSession.isEstaRegistrado()){
            finalizarCompraUsuarioRegistrado();
        }else{
            finalizarCompraUsuarioNoRegistrado();
        }        
        reset();
        compraConfirmada  = true;
    }

    public void finalizarCompraUsuarioRegistrado(){

        try {
            MovimientoTienda pedAux = movimientoFacturacionRN.nuevoMovimiento(pedido.getCliente(), "FC", "PRW", "0140");                  
            for(ItemProductoTienda ip: pedido.getItemsProducto()){                
                movimientoFacturacionRN.agregarProducto(pedAux, ip.getProducto(),ip.getCantid(), ip.getPrecio());
                
            }                    
            
            pedAux.setEstaut((short) 1 );
            pedAux.setFchaut(new Date());
            pedAux.setFchmov(JsfUtil.getFecha());
            pedAux.setCondicionDePago(condicionPago);
            pedAux.setTextos(observaciones);
                       
            pedido = pedAux;            
            
            //Generamos items componentes si existen productos de tipo kit
            movimientoFacturacionRN.generoItemsComponente(pedAux);
            movimientoFacturacionRN.guardar(pedAux);
            enviarNotificaciones();
            JsfUtil.addInfoMessage("Muchas gracias. Su pedido ha sido confirmado y será gestionado en breve");
            
            pedido = null;
        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.addErrorMessage("Error al confirmar pedido");
        }
    }

    public void finalizarCompraUsuarioNoRegistrado(){

        try {
            pedido.setId(new MovimientoTiendaPK("FC", "PRW", 0));            
            pedido.getCliente().setNombre(razonSocial);
            pedido.getCliente().setDireml(direcciónEmail);
            pedido.getCliente().setNrodoc(cuit);
            pedido.setTextos(observaciones);

            enviarNotificaciones();
            pedido = null;

            JsfUtil.addInfoMessage("Muchas gracias. Su pedido ha sido informado y será gestionado en breve");
            JsfUtil.addInfoMessage("","La confirmación queda sujeta a la verificación de los datos ingresados");
        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.addErrorMessage("Error al confirmar pedido");
        }
    }

    private void cargarDatos() {

        if (usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getCliente()!=null) {

            razonSocial = usuarioSession.getUsuario().getCliente().getNombre();
            cuit = usuarioSession.getUsuario().getCliente().getNrodoc();
            direcciónEmail = usuarioSession.getUsuario().getCliente().getDireml();
            JsfUtil.addInfoMessage("Por favor, valide sus datos");
        }else{
            JsfUtil.addInfoMessage("Por favor, ingrese sus datos");
        }
    }

    public void reset(){

        razonSocial = "";
        cuit = "";
        direcciónEmail = "";
        observaciones = "";
        codigoCondicionDePago = "";
        compraConfirmada = false;
        skipLogin = false;
    }

    public void enviarNotificaciones(){

        try {

            if (p.getEnviaNotificaciones() == 'S') {

                List<CorreoElectronico> correos = new ArrayList<CorreoElectronico>();

                correos.add(generarCorreoElectronicoEmpresa());
                
                //Si es un usuario tipo cliente enviamos la notificación
//                if(usuarioSession.getUsuario().getTipo().equals('C') || usuarioSession.getUsuario().getTipo().equals('P')){
//                    correos.add(generarCorreoElectronicoCliente());
//                }
                
                correos.add(generarCorreoElectronicoCliente());

                //Enviamos los correos con un nuevo hilo...
                SenderEmail se = new SenderEmail(mailFactoryBean, correos);
                se.start();
            }
            
        } catch (Exception exception) {

        }    
    }

    public CorreoElectronico generarCorreoElectronicoCliente(){

        if(usuarioSession.isEstaRegistrado()){

            return new CorreoElectronico("Su pedido Nro. " + pedido.getId().getNrofor() + " ha sido confirmado"
                    , direcciónEmail
                    , mailFactoryBean.generarMensaje("Promoción",movimientoFacturacionRN.generarMensajeCorreoElectronico(pedido)));

        }else{
            
            return new CorreoElectronico("Su Pedido de Promoción " + promocion.getDescripcion() + " ha sido confirmado", 
                    direcciónEmail, 
                    mailFactoryBean.generarMensaje("Promoción",generarMensajePromocionCliente()));
        }
    }

    public CorreoElectronico generarCorreoElectronicoEmpresa() {

        try {

            String asunto = "";
            String destinatario = "";            

            destinatario = mailFactoryBean.validarDestinatario(p.getCorreoElectronicoPromocion(), false);

            if(usuarioSession.isEstaRegistrado()){
                
                asunto = "Presupuesto Promoción Nro: "+ pedido.getId().getNrofor()+" - Cliente: " + pedido.getCliente().getNombre();
                
                destinatario += ";"+mailFactoryBean.validarDestinatario(pedido.getCliente().getSitio().getEmailPedidos(), false); 

                if(usuarioSession.getUsuario().getTipo().equals('V')){

                    asunto = pedido.getCliente().getVendedor().getDescrp() + asunto;
                    destinatario += (pedido.getVendedor().getCamail()==null?"":";"+pedido.getVendedor().getCamail());
                    
                }

                List<String> contenido = movimientoFacturacionRN.generarMensajeCorreoElectronico(pedido);

                contenido.add("Nuevo presupuesto Promoción Nro.: "+promocion.getNroPromocion());
                contenido.add("Cliente:" + pedido.getCliente().getNombre());
                
                return new CorreoElectronico(asunto, destinatario, mailFactoryBean.generarMensaje("Promoción",contenido));
                                
            }else{
                asunto = "Pedido de Promoción " + promocion.getDescripcion() + " - ATENCIÓN: Validar datos cliente";                
                return new CorreoElectronico(new InternetAddress(direcciónEmail, razonSocial),asunto, destinatario, mailFactoryBean.generarMensaje("Promoción",generarMensajePromocionEmpresa()));
            }
            
        } catch (UnsupportedEncodingException e) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "generarCorreoElectronicoEmpresa", e);           
            return new CorreoElectronico("Error", "claudiotrosch@gmail.com", "Problemas para generar correo confirmación de pedido a cliente" + e.getStackTrace());
        }
    }

    private List<String> generarMensajePromocionCliente(){

        SimpleDateFormat formateadorFecha = new SimpleDateFormat("dd/MM/yyyy");

        List<String> contenido;
        contenido = new ArrayList<String>();

        contenido.add("<b>Estimado Cliente:</b>");
        contenido.add("Le agradecemos su compra. Su pedido está sujeto a la validación de los datos");
        contenido.add("En breve nos pondremos en contacto con usted.");
        contenido.add("Detalle del pedido:");

        contenido.add("<hr/>");
        contenido.add("Fecha compra: " + formateadorFecha.format(pedido.getFchmov()));
        contenido.add("Condición: " + pedido.getCondicionDePago().getDescrp());
        contenido.add("Observaciones: " + pedido.getTextos());
        contenido.add("<hr/>");
        contenido.add("Detalle de productos"+ "\n");

        String sItems ="";

        if(!pedido.getItemsProducto().isEmpty()){
            sItems += "<table style=\"font-family: Arial, Helvetica, sans-serif; width: 700px; border: 0px solid #eeeeee;\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\" align=\"center\">";
            sItems += "<tr><td><b>Cant.</b></td>"
                    + "<td align=\"center\" ><b>Descripción</b></td> "
                    + "<td align=\"right\" ><b>Pcio. Unit.</b></td>"
                    + "<td align=\"right\" ><b>Subtotal c/IVA</b></td></tr>";

            for(ItemProductoTienda i: pedido.getItemsProducto()){

                sItems += "<tr><td align=\"right\" width=\"15\" >"+i.getCantid().toBigInteger()+"</td>";
                sItems += "<td style=\"margin-left: 10px;\">"+i.getProducto().getDescrp().trim()+"</td>";
                sItems += "<td align=\"right\" width=\"50\">"+i.getPrecioFinalConIVA().setScale(2,2)+"</td>";
                sItems += "<td align=\"right\" width=\"50\">"+i.getTotalLineaConIVA().setScale(2,2)+"</td></tr>";
            }

            sItems += "<tr><td align=\"right\" colspan=\"2\"><b>Total c/IVA:</b></td><td align=\"right\"><b>$"+pedido.getSubTotalConIVA().setScale(2,2)+"</b></td></tr></table>";
        }


        contenido.add(sItems);
        contenido.add("<hr>");
        contenido.add("Muchas gracias por utilizar nuestra tienda virtual! ");

        return contenido;
        
    }

    private List<String> generarMensajePromocionEmpresa(){

        SimpleDateFormat formateadorFecha = new SimpleDateFormat("dd/MM/yyyy");

        List<String> contenido;
        contenido = new ArrayList<String>();

        contenido.add("<b>Nuevo pedido de Promoción "+promocion.getDescripcion()+"</b>");
        contenido.add("Se ha ingresado un nuevo pedido de promoción");
        contenido.add("El ciente no se ha registrado para realizar la operación");
        contenido.add("Es necesario ponerse en contacto con el cliente para validar la compra");
        contenido.add("Detalle del pedido:");

        contenido.add("<hr/>");
        contenido.add("Fecha compra: " + formateadorFecha.format(pedido.getFchmov()));
        contenido.add("Razón social: " + razonSocial);
        contenido.add("Cuit: " + cuit);
        contenido.add("Condición: " + pedido.getCondicionDePago().getDescrp());
        contenido.add("Observaciones: " + pedido.getTextos());
        contenido.add("<hr/>");
        contenido.add("Detalle de productos"+ "\n");

        String sItems ="";

        if(!pedido.getItemsProducto().isEmpty()){
            sItems += "<table style=\"font-family: Arial, Helvetica, sans-serif; width: 700px; border: 0px solid #eeeeee;\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\" align=\"center\">";
            sItems += "<tr><td><b>Cant.</b></td>"
                    + "<td align=\"center\" ><b>Descripción</b></td> "
                    + "<td align=\"right\" ><b>Pcio. Unit.</b></td>"
                    + "<td align=\"right\" ><b>Subtotal c/IVA</b></td></tr>";

            for(ItemProductoTienda i: pedido.getItemsProducto()){

                sItems += "<tr><td align=\"right\" width=\"15\" >"+i.getCantid().toBigInteger()+"</td>";
                sItems += "<td style=\"margin-left: 10px;\">"+i.getProducto().getDescrp().trim()+"</td>";
                sItems += "<td align=\"right\" width=\"50\">"+i.getPrecioFinalConIVA().setScale(2,2)+"</td>";
                sItems += "<td align=\"right\" width=\"50\">"+i.getTotalLineaConIVA().setScale(2,2)+"</td></tr>";
            }

            sItems += "<tr><td align=\"right\" colspan=\"2\"><b>Total c/IVA:</b></td><td align=\"right\"><b>$"+pedido.getSubTotalConIVA().setScale(2,2)+"</b></td></tr></table>";
        }
        
        contenido.add(sItems);
        contenido.add("<hr>");

        return contenido;

    }

    //----------------------------------------------------------------------
   
    public UsuarioSessionBean getUsuarioSession() {
        return usuarioSession;
    }

    public void setUsuarioSession(UsuarioSessionBean usuarioSession) {
        this.usuarioSession = usuarioSession;
    }

    public ParametrosRN getParametroRN() {
        return parametroRN;
    }

    public void setParametroRN(ParametrosRN parametroRN) {
        this.parametroRN = parametroRN;
    }

    public CondicionDePago getCondicionPago() {
        return condicionPago;
    }

    public void setCondicionPago(CondicionDePago condicionPago) {
        this.condicionPago = condicionPago;
    }

    public Promocion getPromocion() {
        return promocion;
    }

    public void setPromocion(Promocion promocion) {
        this.promocion = promocion;
    }

    public List<String> getSeleccion() {
        return seleccion;
    }

    public void setSeleccion(List<String> seleccion) {
        this.seleccion = seleccion;
    }

    public boolean isSkipLogin() {
        return skipLogin;
    }

    public void setSkipLogin(boolean skipLogin) {
        this.skipLogin = skipLogin;
    }

    public String getCuit() {
        return cuit;
    }

    public void setCuit(String cuit) {
        this.cuit = cuit;
    }

    public String getDirecciónEmail() {
        return direcciónEmail;
    }

    public void setDirecciónEmail(String direcciónEmail) {
        this.direcciónEmail = direcciónEmail;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public boolean isCompraConfirmada() {
        return compraConfirmada;
    }

    public void setCompraConfirmada(boolean compraConfirmada) {
        this.compraConfirmada = compraConfirmada;
    }

    public MovimientoTienda getPedido() {
        return pedido;
    }

    public void setPedido(MovimientoTienda pedido) {
        this.pedido = pedido;
    }

    public List<CondicionDePago> getCondicionesDePago() {
        return condicionesDePago;
    }

    public void setCondicionesDePago(List<CondicionDePago> condicionesDePago) {
        this.condicionesDePago = condicionesDePago;
    }

    public String getCodigoCondicionDePago() {
        return codigoCondicionDePago;
    }

    public void setCodigoCondicionDePago(String codigoCondicionDePago) {
        this.codigoCondicionDePago = codigoCondicionDePago;
    }

    public Integer getIdPromocion() {
        return idPromocion;
    }

    public void setIdPromocion(Integer idPromocion) {
        this.idPromocion = idPromocion;
    }  
}
